This invention relates generally to a system and method for caching an application on a computer and in particular to a system and method for remotely storing a software application or software application module so that the application is distributed through a computer network.
A typical web browsing application, such as Netscape(copyright) Navigator or Microsoft(copyright) Explorer, permits the user to cache web pages on their local computer. Then, during future browsing sessions, prior to retrieving the requested page from the server, the browser checks to see if the web page is still stored in the web page cache. If the web page is in the cache, it is loaded from the cache. Otherwise, the browser requests the web page from the server. Typically, the browser deletes the cache after a certain period of time and does not permit caching of certain types of web pages, such as dynamic web pages. This type of caching may be referred to as static web page caching.
ATandT has developed a computer network with shared static caching wherein there may be a computer network to which one or more computers are attached. The computer network may also include a central server that has a central cache directory. Each time that a computer connected to the computer network caches a data object, it provides an update to the central cache directory. In addition, when a new computer connects to the computer network, the new computer""s list of cached objects are uploaded to the central cache directory so that the central cache directory has a listing of all of the cached objects across the computer network. Then, when any computer requests an object, the central cache directory is checked to determine if the object is cached at one of the other computers so that the computer may retrieve the object from one of the other computers. If the object is not cached at any other computer based on the search of the central cache directory, the computer retrieves the object over the computer network and then updates the central cache directory to inform it that the computer now has a cached copy of the object. This system is an improvement over a typical proxy server system since the proxy server ends up being the bottleneck point. This system provides a distributed cache in that the cached objects are distributed between all of the computers connected to the computer network and the only information on the central computer is the central cache directory. In this system, static objects, such as web pages or the like, may be cached. The limitation of the typical web browsers and the distributed cache is that these systems do not permit dynamic data to be cached. For example, these systems do not permit software applications or software application modules to be cached.
In a distributed computing environment, there may be a number of computing nodes that store pieces of static data (files, multimedia, etc.). These nodes are connected together by network links. These nodes also field requests for service (a simple example of a request could be xe2x80x9cgive me access to data file Xxe2x80x9d). Since the time taken to send the requested data object over networks links from the node where it is stored to the node that requested it can be significant, it is common to use a caching service to replicate the data objects at various nodes. The basic idea is that when a request for a data object, X, is received at a node, N, of the network, the caching service seeks a copy of X that is xe2x80x9cclosexe2x80x9d to N (in terms of number of network links to be traversed, or estimated network delay or some other compound measure of proximity). By actively managing the replication of data objects in response to incoming requests, the caching service is typically able to service the incoming requests in such a way that users making the service requests experience quicker responses on average. This caching service is typically a distributed program running at the various nodes of the network and has to manage such issues as the amount of storage available at each node, the network overhead caused by preemptively replicating data at multiple nodes, and the consistency of multiple copies of a data object (i.e., what happens if one copy of an object is modified by some other program). Such distributed caching is at the heart of an internet caching service such as that provided by Akamai, Inc.
A common technique for dealing with the above problem and limitation is called server-mirroring. The basic idea is to statically replicate the database, D, and the search application for the database, A, at a number of nodes of the network so that in essence the query service is replicated in its entirety at multiple nodes. If a web site has multiple mirror sites, a directory name service (DNS) lookup (typically requested by the browser) will return multiple IP addresses in a list with a predefined order and the browser typically selects the first IP address. If the server selected by the browser is overloaded and a time-out occurs, the browser will select the next IP address in the list as so on.
There are several difficulties with this approach. First, the replication of D and A at multiple nodes means permanently locking down storage and computational resources at a number of network nodes. This is especially significant when the network (for instance, the internet) is offering hundreds of such search and other services. Second, the assignment of nodes at which to replicate D and A is static in that it does not respond to changes in user request patterns. For instance, search services relating to financial information may be more accessed in North American business hours whereas, later in the day, North American users tend to seek sports- and entertainment-related information, while users in the Far East begin to seek financial information. Third, the database, D, is replicated in its entirety. However, it is well known that a large fraction of queries concentrates on a small fraction of the database (so-called spatial locality). In addition, there are patterns of temporal locality (for instance, a surge in interest in financial information on a company in response to a news item about the company). Thus, it is desirable to provide a software application caching system and method that overcomes the above described limitations and problems with conventional systems and it is to this end that the present invention is directed.
The application caching system and method in accordance with the invention permits service request across the computer network to be executed in an efficient manner without copies of the application and data to service the service request located at each node of the computer network. The application caching system thus minimizes the latency associated with fulfilling the service request. The application caching system may be used with a variety of different applications including search applications and the like.
Thus, in accordance with the invention, an application caching system is provided. The system comprises a computer network and a cache directory connected to the computer network that controls the caching of an application across the computer network. The system further comprises a master application computer that stores one or more applications and the data associated with the one or more applications, and an application cache computer that receives an application and its associated data from the master application computer in order to service a request from a computer located near the application cache computer. In more detail, the cache directory further comprises a list of prior service requests and prior service results and the location of the resources for servicing the service and a central cache dispatcher for dispatching a service request to the appropriate application cache computer.
The central cache dispatcher returns the cached result if the current service request matches a prior service request and determines if the application cache computer adjacent the service requester can handle the service request. The central cache dispatcher may, if the adjacent application cache computer cannot handle the service request, forward an application and data necessary to execute the service request to an application cache computer near the service requester to execute the service request. A method for application caching in accordance with the invention is also described.